package com.young.ysepay.service;

import com.young.ysepay.beans.YsPayOrderBean;

import java.util.Map;

public interface YsService {

    /**
     * 订单支付
     *
     * @param m
     * @return
     */
    Map<String, Object> orderPay(YsPayOrderBean m);

    /**
     * 订单退款接口
     *
     * @param m
     * @return
     */
    Map<String, Object> orderRefund(YsPayOrderBean m);

    /**
     * 退款查询接口
     *
     * @param m
     * @return
     */
    Map<String, Object> orderRefundSelect(YsPayOrderBean m);

    /**
     * 银盛支付代付接口
     *
     * @param m
     * @return
     */
    Map<String, String> ysePayWithdraw(YsPayOrderBean m);

    /**
     * 银盛支付代付查询（提现查询）
     *
     * @param m
     * @return
     */
    Map<String, String> ysePayDfQuery(YsPayOrderBean m);

    /**
     * 银盛支付普通子商户提现接口
     *
     * @param m
     * @return
     */
    Map<String, String> ysePayMerchantWithdraw(YsPayOrderBean m);

    /**
     * 银盛支付普通子商户提现查询（提现查询）
     *
     * @param m
     * @return
     */
    Map<String, String> ysePayMerchantQuery(YsPayOrderBean m);

    /**
     * 获取证书路径并且签名
     * @param sParaTemp
     * @return
     */
    Map<String, String> buildRequestPara(Map<String, String> sParaTemp);

    /**
     * API验证签名工具，把签名值，请求字符编码，返回结果(json body)传递过来进行验证签名 公钥验证签名
     * 用于验证银盛同步响应回来的参数
     * @param sign
     * @param responseBody
     * @param charset
     * @return
     * @see
     */
    boolean verifyJsonSign(String sign, String responseBody, String charset);

    /**
     * 银盛支付查询接口
     *
     * @param m
     * @return
     */
    Map<String, String> ysePayQuery(YsPayOrderBean m);

    /**
     * 银盛支付关闭订单接口
     *
     * @param m
     * @return
     */
    Map<String, String> ysePayCancle(YsPayOrderBean m);

    /**
     * 银盛支付分账接口
     *
     * @param m
     * @return
     */
    Map<String, Object> ysePayDivision(YsPayOrderBean m);

    /**
     * 分账查询接口
     *
     * @param orderPayNo 订单号
     * @return
     */
    Map<String, Object> ysePayDivisionQuery(String orderPayNo);

    /**
     * 获取对账单下载地址接口
     *
     * @param time
     * @return bill_download_url    账单下载地址链接，获取连接后30秒后未下载，链接地址失效。
     */
    Map<String, Object> ysePayDownloadUrl(String time);

    /**
     * 银盛实名认证接口
     *
     * @param m
     * @return
     */
    Map<String, Object> ysCheckBank(YsPayOrderBean m);

    /**
     * 银盛商户余额查询接口
     *
     * @param paramMap
     * @return
     */
    Map<String, Object> ysBalanceQuery(Map<String,Object> paramMap);

    /**
     * 银盛商户余额查询接口
     *
     * @param m
     * @return
     */
    Map<String, Object> ysRegistStore(YsPayOrderBean m);

    /**
     * @Description: 上传图片获取认证口令接口
     * @author liudehai
     * @date 2018年10月29日 下午3:17:11
     * @version V1.0
     */
    Map<String, Object> yseUpToken();

    /**
     * 获取银盛注册接口结果信息
     *
     * @param params
     * @return
     * @author liudehai
     * @date 2018年11月2日上午10:57:41
     */
    Map<String, Object> getYsState(Map<String,Object> params);

    /**
     * 支付宝h5支付
     *
     * @param m
     * @return
     * @author liudehai
     * @date 2018年11月9日下午1:08:00
     */
    String aliWap(YsPayOrderBean m);

    /**
     * @Author zhaopengjun
     * @Description // 银盛分账查询（1分类）
     * @Date 11:22 2019/5/14
     * @Param [mapParams]
     * @return java.util.Map<java.lang.String,java.lang.Object>
     **/
    Map<String,Object> splitRequestReceipt(String bizContent);

    /**
     * @Author zhaopengjun
     * @Description //银盛分账请求（一清）
     * @Date 11:03 2019/5/15
     * @Param [mapParams]
     * @return java.util.Map<java.lang.String,java.lang.Object>
     **/
    Map<String,Object> splitReceipt(Map<String,Object> mapParams);

    /**
     * @Author zhaopengjun
     * @Description // 银盛实时提现
     * @Date 15:19 2019/5/20
     * @Param [mapParams]
     * @return java.util.Map<java.lang.String,java.lang.Object>
     **/
    Map<String,Object> withdrawal(Map<String,Object> mapParams);

    /**
     * @Author zhaopengjun
     * @Description // 银盛支付新平台
     * @Date 17:53 2019/5/22
     * @Param [paramMap]
     * @return java.util.Map<java.lang.String,java.lang.Object>
     **/
    Map<String,Object> ysPay(Map<String,Object> paramMap);

    /**
     * @Author zhaopengjun
     * @Description // 银盛非一清待打款接口
     * @Date 10:08 2019/5/24
     * @Param [mapParams]
     * @return java.util.Map<java.lang.String,java.lang.Object>
     **/
    Map<String,Object> transferAccounts(Map<String,Object> mapParams);

}
